Computer hard disks and other computer storage devices hold digital data which represents numbers, names, dates, texts, pictures, sounds, and other information used by businesses, individuals, government agencies, and others. To help organize the data, and for technical reasons, many computers divide the data into drives, partitions, directories, and files. The terms "file" and "directory" are familiar to most computer users, and most people agree on their meaning even though the details of written definitions vary.
However, the term "partition" is unfamiliar to many people, and the term "drive" has different meanings even when the context is limited to computers. As used here, a "partition" is a region on one or more storage devices which is (or can be) formatted to contain one or more files or directories. So-called "IBM-compatible partition" types include extended, logical, and primary, as indicated by bitflags or other values. More generally, each formatted partition is tailored to a particular type of file system, such as the Macintosh file system, SunOS file system, Windows NT File System ("NTFS"), NetWare file system, or one of the MS-DOS/FAT file systems (MACINTOSH is a mark of Apple Computer, Inc.; SUNOS is a mark of Sun Microsystems, Inc.; WINDOWS NT and MS-DOS are marks of Microsoft Corporation; NETWARE is a mark of Novell, Inc.). A file system need not fill the partition which holds it.
"Drive" is sometimes used interchangeably with "partition," especially in references to logical drive C: or the like on so-called Wintel or IBM-compatible machines. But "drive" may also refer to a single physical storage device such as a magnetic hard disk or a CD-ROM drive. To reduce confusion, "drive" will normally be used here to refer only to storage devices, not to partitions. Thus, it is accurate to note that a partition often resides on a single drive but may also span drives, and a drive may hold one or more partitions.
It is often useful to manipulate partitions by creating them, deleting them, moving them, copying them, changing their size, changing the cluster size used by their file systems, and performing other operations. A number of tools for manipulating partitions are commercially available, including the FDISK program and the PartitionMagic.RTM. program (PARTITIONMAGIC is a registered trademark of PowerQuest Corporation). Version 4.0 of the PartitionMagic.RTM. program, which became publicly available during September 1998, implements aspects of the present invention. Partition manipulation is also discussed in detail in U.S. Pat. Nos. 5,675,769 and 5,706,472 (hereafter the '769 and '472 patents, respectively) and in commonly owned U.S. Pat. Nos. 6,108,759 filed Sep. 17, 1997, U.S. Pat. No. 5,930,831 filed Apr. 11, 1997, U.S. Pat. No. 6,250,300 filed Aug. 15, 1998, and U.S. Pat. No. 6,108,697 filed Oct. 2, 1998, each of whose respective discussions of partition manipulation tools and techniques are incorporated herein.
A Windows NT Disk Administrator program allows the user to delete or create partitions essentially in a virtual fashion, but its support for multiple "virtual" commands is limited. The user is allowed to create a partition, but must "commit changes" before that partition can be formatted. Formatting a partition can only be performed immediately. Other programs that manipulate partitions include version 3.0 of the PartitionMagic program, one or more versions of a Quarterdeck Partition-It program, and one or more versions of two programs from V Communications sold under the names System Commander Deluxe and Partition Commander. Each of these programs generally force the user to make one partition manipulation at a time.
FIG. 1 illustrates familiar approaches to partition manipulation. A user 100 supplies commands to a utility 102 such as FDISK, or an early (version 3.0 or earlier) PartitionMagic program, or another known partition manipulation tool. The user 100 also receives information from the utility 102, such as partition type(s), location(s), and size(es), and the size and location of free space region(s). This information is typically provided through a Graphical User Interface ("GUI"); one suitable GUI is illustrated in FIG. 6 of U.S. Pat. No. 5,675,769, and that Figure and its accompanying text are incorporated herein. With continued reference to FIG. 1, the utility 102 reads and (with proper semantic and syntactic constraints familiar in the art) writes a partition table 104 stored on a computer storage medium 106. The storage medium 106 may include one or more hard drives, for instance. The partition table 104 defines the position, size, and type of one or more partitions 108, which also reside on the storage medium 106, and may thus define one or more free space regions 110 as well. The utility 102 also reads and writes (again, with proper constraints) file system information and user data which are stored in the partition(s) 108 being manipulated.
Although the PartitionMagic program and other recently developed tools 102 make partition 108 manipulation easier, faster, and safer than it was with FDISK, there is still room for improvement. For instance, it would be helpful to make experimentation easier so that users 100 can more readily try different manipulations and select the ones they deem best. Implicit in this is the need to make it easier to undo a partition 108 manipulation if the user 100 does not like the results. Programs 102 could also provide more help in identifying the partition 108 manipulations that will improve the performance or storage capability of media 106 for a given computer.
One way to encourage experimentation is to make partition 108 moving and copying operations even faster than before. This may be done, for instance, by only moving user data that needs to be moved, as described in claim 1 of the '769 patent identified above. However, this general approach is bounded by limits on the speed with which storage devices 106 can move the user's data. A fundamentally different approach is needed for additional manipulation speed improvements.
Another way to encourage experimentation (at least in theory) is to give users 100 a computer program development environment, to give them computer code for a program 102 implementing the manipulations, and to teach them enough about partitions 108, partition tables 104, file systems in partitions, computers, programming, and the code to let them try different approaches. A knowledgeable programmer can "comment out" or jump around sections of program 102 code that would otherwise execute disk 106 I/O or other operations in a given situation and then update the program's data structures using a debugger or other means to imitate the omitted operation's results before the program 102 continues execution. In this way the effect of different operations on the program 102 can be explored without necessarily performing the operations.
However, this approach has several serious drawbacks, not least of which is the demand that users 100 manage a large body of complex technical knowledge. Most users 100 do not have the technical tools required for this approach. Moreover, users 100 want a reliable tool developed by skilled programmers so that the tool, not the user, manages the underlying technical details. The fact that a highly knowledgeable programmer can achieve a certain result by making technical modifications to a program 102 does not enable most users 100 (or even most programmers) to obtain that result. This is particularly true if the program modifications needed also cripple the program 102 for its normal intended use.
In short, improvements are needed to promote experimentation and otherwise advance the art of partition manipulation. Accordingly, new systems, devices, signals, and methods for manipulating partitions are disclosed and claimed below.